/*
**  Apache License, Version 2.0
**  Notes:Use this command to anonymously check out the latest project source code:
**  Non-members may check out a read-only working copy anonymously over HTTP.
**  SVN checkout http://YHHCatiaBaseUtlWsp.googlecode.com/svn/trunk/ 
**
**  Author:		Kevin Yang
**  Email:		Bigearrabbit@qq.com
**
**  DATE:		2013-4-4
**
**  File Name:	YHHCatalogParameter.h
**
**  Notes:
** 
*/
#ifndef YHHCatalogParameter_H
#define YHHCatalogParameter_H

// Local Framework
#include "YHHCatiaBaseUtl.h"

// System Framework
#include "CATBaseUnknown.h"
#include "CATUnicodeString.h"
#include "CATISpecObject.h"

//YHH
#include "YHHListV.h"

/// <summary>Catalog Parameter</summary>
/// <remarks></remarks>
/// <author>Kevin Yang</author>
/// <date>2013-4-5</date>
class ExportedByYHHCatiaBaseUtl YHHCatalogParameter
{
  public:

  // Standard constructors and destructors
  // -------------------------------------
     YHHCatalogParameter ();
     virtual ~YHHCatalogParameter ();

  // Copy constructor and equal operator
  // -----------------------------------
  YHHCatalogParameter (const YHHCatalogParameter &);
  YHHCatalogParameter& operator=(const YHHCatalogParameter&);

public:
	CATUnicodeString AttrName;//Name
	CATAttrKind AttrType;//AttrType
	CATAttrInOut AttrInOut;//AttrInout
	bool IsList;//IsList
public:

	/// <summary>Bach Add</summary>
	/// <param name="ipSpecOnStartUp">Start up</param>
	/// <param name="iListParam">List</param>
	/// <return></return>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2014-1-6</date>
	static HRESULT CatalogAddAttribute (CATISpecObject *ipSpecOnStartUp
		, YHH::ListV<YHHCatalogParameter> & iListParam );

	/// <summary>Set List Value</summary>
	/// <param name="iName">Name</param>
	/// <param name="iType">CATAttrKind</param>
	/// <param name="iFacet">CATAttrInOut</param>
	/// <return></return>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2014-1-6</date>
	void SetTKListValue (const CATUnicodeString& iName, CATAttrKind iType, CATAttrInOut iFacet );

	/// <summary>Set Value</summary>
	/// <param name="iName">Name</param>
	/// <param name="iType">CATAttrKind</param>
	/// <param name="iFacet">CATAttrInOut</param>
	/// <return></return>
	/// <remarks></remarks>
	/// <author>Kevin Yang</author>
	/// <date>2013-4-4</date>
	void SetValue	(const CATUnicodeString& iName,
		CATAttrKind iType,
		CATAttrInOut iFacet=sp_NEUTRAL );
};

#endif
